BSP Help Page
With this in mind, please note the following:
BSP Alpha Ver. 0.44
I DISCLAIM ALL WARRANTIES, WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE WITH RESPECT TO THE SOFTWARE "BSP" AND THESE ACCOMPANYING WRITTEN MATERIALS, IF ANY. I DO NOT WARRANT THAT THE OPERATION OF BSP WILL BE UNINTERRUPTED, ERROR FREE OR MEET YOUR SPECIFIC REQUIREMENTS. ADDITIONAL STATEMENTS SUCH AS PRESENTATIONS, WHETHER ORAL OR WRITTEN, DO NOT CONSTITUTE WARRANTIES BY ME AND SHOULD NOT BE RELIED UPON BY YOU.
If this software interrupts the operation of your computer or causes data loss on your computer, I disclaim all liabilitiy for any such occurence. You understand that this is an alpha version of BSP and that the software is provided for your enjoyment "as is".
YOU ACKNOWLEDGE THAT YOU HAVE READ THIS AGREEMENT, YOU UNDERSTAND THIS AGREEMENT, AND UNDERSTAND THAT BY CONTINUING THE INSTALLATION OF BSP, BY LOADING OR RUNNING BSP, OR BY PLACING OR COPYING BSP ONTO YOUR COMPUTER HARD DRIVE, YOU AGREE TO BE BOUND BY THESE TERMS AND CONDITIONS. YOU FURTHER AGREE THAT, EXCEPT FOR WRITTEN SEPARATE AGREEMENTS BETWEEN ME AND YOU, THIS AGREEMENT IS A COMPLETE AND EXCLUSIVE STATEMENT OF THE RIGHTS AND LIABILITIES OF THE PARTIES. THIS AGREEMENT SUPERSEDES ALL PRIOR ORAL AGREEMENTS, PROPOSALS OR UNDERSTANDINGS, AND ANY OTHER COMMUNICATIONS BETWEEN ME AND YOU RELATING TO BSP.
This document contains:
I. What is BSP?
II. What do I need to run BSP?
You will need a computer.
A. Hardware Requirements.
More specifically, you will probably want to run BSP on a computer similar to what is required to run Quake. I have developed BSP on a P90 with 16 Megs of RAM. If you have such a system, I think the program will work. If you don't at least have such a system, please don't flame me (see bug reporting below) if BSP doesn't work. I am not a commercial developer. I am just a hobbyist like you (or at least some of you). A 256 color display is necessary. I have now added support for both 16bpp (High Color) and 24 bpp (True Color or 16.7 M colors).BSP should run on these systems, however, rendering will be somewhat slower (more data to transfer), and you may have to make the vido setting changes to the .ini (see below). I recommend running at the highest resolution your computer can muster in windows. My system runs at 1280 x 1024 and that is what I have used in developing BSP. Below 1024x768 becomes cluttered and 800x600 is doable. 640x480 is practically impossible to use. If you are stranded in 640x480, you probably can't run Quake anyway :(
VIDEO SETTINGS:
B. Software Requirements
I have developed BSP using Borland C++ v. 4.5. My computer currently runs Windows 95. However, for now, BSP is a 16-bit application and does not rely on any of the Win32 API. Therefore, I believe that BSP will run on a Windows 3.1 system.
Some folks say BSP has run for them under Windows 3.1, others say it dies. I've noticed that the menu is messed up (cut in half [May be fixed in v. 0.40]) on my work machine. Other people have also noticed this. I have no idea why this is happening. Don't know if I'll be able to fix Win 3.1 up, as I don't have it installed on the PC I develop on... :( Have to wait and see...
I also run BSP on a computer with 16 Mb of RAM. If you have less, I don't know if it will work. BSP can use quite a bit of RAM when loading large .map files. If you have less than 16 Mb and BSP works or barfs with any kind of memory message, let me know (see bug reporting below, first).
BSP requires several Borland Run-Time Libraries to run. In particular, BSP requires the following libraries to be present (so far as I can tell):
These files should reside in the same directory as the BSP executable
Files that come with the BSP.ZIP archive:
C. Setting up the BSP.INI file
BSP uses an ".ini" file which I have creatively named "BSP.INI".
BEFORE YOU RUN BSP THE FIRST TIME, you will want/need to edit this file (using whatever ASCII text editor you want).
A typical BSP.INI file looks like this:
The entries in this file correspond to the following parameters:
III. What are the windows for?
Editing in BSP takes place in five windows:
A. The Edit Window shows a current 3D wire frame view (or flat shaded or fully texture mapped view) of the map from the current camera position. If you perform an activity and this view does not update, hit the "F9" key to force a redraw of this window. The caption displays the current map being worked on. The circle in the upper right shows the current orientation of the camera view direction, in degrees.
Clicking in the Edit Window has two functions. You can set the view direction by clicking in the orientation circle in the upper right. You will find this much faster than using the keyboard, especially for large levels with many brushes/entities.
ADDED v. 0.22: You can now select and deslect brushes/entities in the edit window. Aim for one of the lines. Even better, aim right at one of the corners. REMEMBER: to deselect an entity and go back to the world, use the "Esc" key!!!!! Clicking just selects/deslects brushes, does not reset entity to world (btw, the "world" has almost all of the brushes of the level, that's why it's important to get back to the world.)
This window can be slow to redraw on large maps (esp. for flat shaded and texture mapped previews). Bringing in the far clipping plane to about -512 or so will reduce the number of polygons which are drawn.
As the flat shaded or texture mapped preview is drawing, the number of brushes rendered will be shown in the upper left corner of the Edit Window.
B. The XY Views, by default, show the current map from the top down. There are lists on the XY View to change the gridsize and there is a button to turn the grid on or off. In addition, the XY View contains the current scale for displaying the map.
Added v. 0.30: You can toggle the XY View to a YZ or XZ view by hitting "Ctrl-Return", or choosing "Switch Map View" from the "Window" menu or by hitting the Delta "XY" button on the second row of the button bar.
Added v. 0.40: There are now multiple XY Views. Each can be toggled (current (or last used) XY View is toggled) by hitting Ctrl-Return. If you don't want to see all three, just minimize the others...
The left and right mouse buttons are used with this view for performing a variety of operations depending upon which keys (or none) is/are also being held down:
NEW: v. 0.35. Brush manipulation in XY View now provides feedback. (When dragging multiple brushes, only one of them is actually shown during movement).
ADDED v.0.40 When the mouse flies over any of the XY Views, the current coordinates are displayed in the upper left corner (world coordinates)
C. The Entity Browser is used for modifying entity key/value pairs and also for creating new entities. The top portion of the window shows "classname" and its description. To create an entity, you would select an appropriate class. Create the brush to make the entity out of and then hit the "Make" button on the browser (or from the menu or control bar). The various check boxes are for setting appropriate flags for the currently selected entity. The key/value window lists all of the key/value pairs for the currently selected entity. The angle buttons add or modify and angle key/value pair for the current entity. The key and value windows can be used to add, edit, or delete key/value pairs from the current entity.
v. 0.40: I shortened it a bit for users with smaller screens and the Tab key now works to switch fields
To add a key and value, type the key into the "Key" filed and the value in the "Value" field and hit the "Add" button. To remove a key value pair, select the pair from the list box and hit the "Del" button. To modify a pair, select the pair, type in the new value in the "Value" field and hit the "Add" button.
Clicking on the flag check boxes will insert the appropriate "spawnflags" for the selected entity. The top portion of the entity browser should contain a description of the various flags for each entity. The text is taken from id's .qc files. If you don't like it, modify the text in the ents.qc file. I'm not a .qc expert, so please refrain from asking me really detailed questions about flags and stuff.
D. The Texture Browser is pretty straightforward. Either select a texture from the list box, or click on it with the left mouse button. The yellow highlight will display around the current texture. There are also buttons to adjust the following:
NEW (v. 0.26): Right clicking on a texture will zoom in (1x to 12x) on the selected texture. Drag the mouse to change the zoom.
NEW (v. 0.30): Texture rotation increment/decrement changes to 5 degrees (to permit 45 degree rotations).
E. The Selected Brush Window is useful for several things. First, the window is really only relevant when one brush is selected. For now, the view is fixed and looks from +x to -x (or from right to left in the XY View). If the brush is too big or small for the Selected Brush Window, use the "+" and "- " arrows to adjust the size. The "?" button displays the textures for all of the faces of the brush. The "current" face is the yellow face and it's texture is written in yellow. The list box may be used to change the "current" face.
To change the texture of the whole brush, pick a texture in the Texture Palette and hit the "b" button. (Note: If more than one brush is selected, then all of the brushes will be painted with the selected texture. You have been warned.) To change only the current face (drawn in yellow), hit the "f" button.
Finally, the Selected Brush Window may be used to move the brush up or down, or to grow the top or bottom face of the brush. For now, the mouse drag interface is a bit clunky.
To move the whole brush up or down, simply click with the left mouse button inside the brush and drag up or down. For now, you don't have a lot of precision when doing this, big moves occur. For fine up/down motions of the whole brush, use the "-" and "=" ("+") keys on the keyboard. Sorry.
To stretch the top or bottom face of a brush, click just above the top of the brush (and the click should really be pretty close to the top) and drag in the appropriate direction to grow or shrink the top face of the brush. Same goes for the bottom. Alternatively, the top of the brush can be raised or lowered with the +Top and -Top buttons, respectively. Same goes for the bottom. The increment is set by the current gridsize.
The "w," "f," and "t" radio buttons are for wire, flat and texture modes in the Selected Brush Window. They don't do much right now.
NEW v. 0.40: "n" and "p" buttons added to speed up switching the current face (don't have to use the pull down list if you don't want to)
F. (NEW in v. 0.35) Group Window: The group window lists the groups valid for the current map. Groups are saved when the map is saved. No need to export the .map file, it's still compatible with qbsp, etc. However, if you edit the file with another editor, THE GROUP INFORMATION WILL BE LOST. If you edit the .map file by hand, be careful not to mess up the group information.
The group window consists of a list of the defined groups (on left side) and specific information about the currently highlighed group, as well as various buttons that accomplish the following functions.
"Use Groups". This button displays whether "group mode" is active or not. If not, all brushes/entities are shown in the editing windows. If it is checked, only the visible groups are shown.
"Visible" This button determines whether the group named in the edit field just below it is visible or not.
The list of groups also displays whether the listed groups are "[V]" visible or "[I]" invisible. Single clicking on any of the groups makes it the current group. Double clicking toggles the visibility of the group from on to off and back again.
The edit field below the "Visible" button displays the name of the current group, or, when creating a group, the user types the new name in that field and hits the "Create" button.
The Set Color button is used the change the display color of the current group. The current color is shown just to the right of the Set Color button.
The "Update Views" button determines whether changes made in the "group window" are immediately shown in the other editing windows. Turning this off will allow faster manipulation of groups, but at the expense of feedback until a redraw is forced in the editing windows.
"Create". As its name implies, this button is used to create a group. All brushes that are currently selected will be moved to the group that is created. Group names must be unique. To create a group, selected one or more brushes (or none, group will be empty) and then type the name of the new group into the edit field (below the "visible" button). Hit "Create". Pick a color.
"Delete":. Deletes the current group definition and moves all brushes to the "UnGrouped" group.
"Rename" (not done yet, but will allow changing a group's name)
"Hide" Minimizes the Group Window
"Move Sel To" Moves all brushes currently selected to the current group.
"Make All Visible" Makes all groups visible.
"Make UnGrouped Visible" Makes all groups invisible, except the "group" of "ungrouped" brushes are left showing (so they can be put into groups, etc.)
"Select All" Selects all of the brushes in the current group.
Group Rules: Really only 1: a brush can only be in 1 group at a time. If this is TOTALLY UNACCEPTABLE to anyone, I'll consider changing this. It seems to me that it could get really confusing to do it any other way.
Also, be careful with brushes that are "selected" but are currently in groups that are not "visible". Group operations could seem odd, but it's no big deal.
Creating a group deselects the brushes used to create the group.
IV. What features does BSP have?
BSP has so many other features, I don't know where to begin. Just kidding. BSP has enough features to allow you to create fairly complicated .map files. In fact, some of the features may tempt you to go overboard. If you go wild, you will pay when you try to build the .map with qbsp and you wait, and wait, and wait. Spiral staircases are one of these features.
Portions of BSP are based directly upon id's QuakeEd. For the record, John Carmack gave me express permission to use any of the source I wanted. BSP is modeled, in many ways, after QuakeEd. I figured their feature list was a minimum and, thus, have implemented pretty much all of that functionality. The "ZChecker" is not in BSP, though, so editing is different.
Also, if you have selected brushes in one map, and then open a blank .map or open another .map file, the selected brushes will be copied over to the new map. This can be useful.
Other features include (from the button bar): (NEW) Putting the mouse over any button provides a description in the statuus bar.
FIXED v. 0.40 (Maximizing a window puts the restore, minimize and close boxes in the menu bar)
Features on the Menu (almost all of the button bar features are in the menu):
Keyboard Commands (click here):
How does this "hits" thing work. If you try to select a floor and keep getting the ceiling instead, you need to use the 0-9 keys to select the proper brush. Any time a bare left click is made, BSP keeps track of all of the brushes the click could have selected. The "closest" is actually selected or deselected. But, up to 9 other brushes are stored in the 0-9 keys. Hitting these keys (usually you will only care about keys 0 to about 3) will toggle a particular brush on or off. If Show Hits is enabled, then the Edit Window will show the potential selected brushes in blue, along with index (key) numbers at the vertices. Use these numbers to select the brush you want. You'll have to play with this to get the idea.
V. What do I do with .map files?
Save them and then run qbsp, vis and light on them. Details for doing this can be found elsewhere.
VI. BSP crashed my system and I'm mad, how do I complain?
SAVE YOUR WORK OFTEN!!! I can't emphasize this point enough!
A. Known Bugs / Robustness Issues
Bugs fixed to date:
FIXED: 8/13/96 v. 0.11 Made bsp.ini error checking more robust to now present a file open dialog box when BSP can't find a file. Should solve most setup problems. If you are prompted to select a .qc, badtex.bmp or .wad file, your bsp.ini is not set up correctly. You should fix it, read the instructions carefully on this.
FIXED: 8/14/96 v. 0.12 If making lights, stairs or arches crashed the system b/c it didn't bring up adialog: try v.0.12, I think I figured out the problem.
FIXED 8/18/96 v. 0.15. Upon loading, the wad and world class names are displayed correctly. Cleaned up some view refresh problems. Added mirror/rotate 90 buttons. Added dialog to rotate on X, Y, and/or Z axis by arbitrary degrees. Made Selected Brush Window default to a larger view. Fixed problems with F12/brush subtraction on complex brushes (should work right now). Fixed (1/2 way :)) texture palette problem in 256 color mode (true color/high color still looks like garbage). Fixed Texture browser button "creep". Some other stuff I can't remember.
FIXED 8/26/96 v. 0.20. Revised Ents.qc submitted by Denis Moeller (Thanks!), added dialog to allow either copy or move by x, y, and z offsets, added mouse delta feedback to both xy view and selected brush view, added support for WAD2 files where palette is (1) missing or (2) not the first entry in the WAD, entity browser should reflect correct entity at startup now, trying to kill all memory leaks (if something that used to work now crashes, let me know the details and I'll fix any bugs I accidently introduced :( ), fixed bug where canceling file open dialog would cause a failure on File Save, other stuff.
FIXED 8/28/96 v. 0.21. Fixed brush subtraction bug introduced in v. 0.20 (still dies on certain complex subtractions though). Made all texture names upper case, should allow for animating textures to work correctly (so I hear), fixed division by zero in stairs dialog, added feedback of current brush height/minz and maxz in selected brush view.
FIXED 8/29/96 v. 0.22. I spent some quality time debugging last night and fixed, I hope, the rest of the brush subtraction bugs and some other nasty memory bugs (shouldn't die any more with clip plane or during brush subtraction, let me know if it does). Close box on main window now works; added feature to save selected brushes to a ".bru" file (thanks to someone's suggestion) which can be added to a map via a text editor, etc. (will do import of .bru soon); ADDED BRUSH SELECTION/DESELECTION IN EDIT WINDOW (3D VIEW) -- Use the left mouse button and NOTE: IT IS BEST TO AIM RIGHT AT A CORNER OF THE BRUSH YOU WANT, BEHAVIOR IS A BIT QUIRKY, OTHERWISE, TRIES TO PICK THE CLOSEST LINE
FIXED 9/3/96: 64 sided brushes; texture mapped and flat shaded previews added; fixed most of the palette problem in the texture picker.
FIXED 9/6/96: Added 24bpp true color support (not 16 bpp yet)/gamma correcion (a hack), saving of window position to bsp.ini file, loading in .bru saved brush files, right click and drag for closeup of textures in texture browser, user definable foreground and background colors.
FIXED 9/7/96 v. 0.30: Added 16bpp high color support, finally fixed the palette problem in 256 color modes (!!!)(unsigned v. signed char bug, if you wanted to know), ADDED toggle to switch Map View to XZ or YZ (by popular demand), changed texture rotation angle increment to 5 degrees to allow 45 degree texture rotations, etc., split up rendering code for 256 color, high color and true color modes, should give a big performance gain to rendering flat shaded preview and texture mapped preview, updated ents.qc courtesy of Denis Moeller! Fiddled with Buttons on Button Bar, not quite so loud now.
FIXED: 9/12/96 v. 0.35: Added options for tweaking rgb order in 16bpp and 24 bpp modes. Added options for bit ordering for 16bpp modes (565, 555), etc. ADDED Brush Grouping (saving and loading soon (or maybe in there if I get motivated!), alphabetized texture browser. Fixed sticking of entity broswer on super_damage item (duplicate in ents.qc removed), minor bug fixes to bug subtraction (complex subtractions can cause an "out of Memory" problem! Bzzzt, nope, fixed in v. 0.38), added feedback during subtraction, activated "Make Sphere" (you need a "fixed" qbsp, once available, or else you'll get many "point off plane" errors
FIXED: 9/14/96 v. 0.35: Added N-Sided brush command, added cylinder command, added command to create a brush of a specified height, snapping to grid command (for current brush), added feedback for editing actions, added group saving and loading, added Render Quality options and bsp.ini for SPEEDING UP PREVIEW in flat and texture mapped modes, clip points snap to grid upon movement, User Interface give more feedback, Putting mouse over control bar buttons shows what they do on status bar (like ToolTips in Win95), Render W/H defaults put in bsp.ini also, Fixed more texture wad bugs (let me know if any texture wad still kills bsp), selected brush window display # of selected brushes
ADDED 9/14/96 v. 0.36: Pyramids, extruded brushes, and scaling of brushes.
FIXED 9/16/96 v. 0.37: Group loading bug fixed, brush with arrow dragging fixed, Pg_Up resets roll + pitch angles, Left, Right, Up, Down arrows now navigate correctly.
FIXED 9/18/96 v. 0.38: Brush subtraction bug finally squashed. Complex multiple brush subtractions can now be subtracted, grid fixed and rgb setttings for grid colors added to bsp.ini, fixed UI bug where letting go of drag mouse on XY window frame would cause mouse/brush to get "stuck" together, added groupmode setting to bsp.ini to set the initial group mode setting
FIXED/ADDED 9/25/96 v. 0.40: Tons, and tons of changes:
FIXED/ADDED 9/26/96 v. 0.41: Minor revisions
FIXED/ADDED 9/27/96 v. 0.42: Minor revisions and bug fixes
FIXED/ADDED 9/29/96 v. 0.43: More bug fixes
FIXED/ADDED 10/5/96 v. 0.44: More bug fixes/couple of new things
The following are "bugs" that I know of and intend to fix as soon as possible. Please don't send reports about these problems, unless you have a programming suggestion on how to fix the bug!:
B. How to Report Bugs
Please remember that this editor is a one man job, for a guy who has a very busy other life. Don't flame me about how BSP sucks. If you don't like it, there are/will be plenty of other options. This project started as a study of Binary Space Partitioning Trees and ended up far from their as an exercise to learn about Windows programming. The topic was new to me. Some of the bugs are from me being naive about Windows programming. Some are from me being an idiot :).
This editor is FreeWare. You get what you pay for.
VII. What features will be added to BSP?
And, I'm always open to suggestions about essential features!
VIII. Who am I? (Me, not you).
My resume is at http://www.needlepatent.com
IX. How to reach me.
Web: http://ourworld.compuserve.com/homepages/bernier
E-mail: bernier@atlanta.com
Snail mail address and phone number available upon request.
I hope BSP helps you create worlds!
If you make a cool .map with BSP, please send it to me, I'd love to check it out...